/**
 * 物品查找工具
 * 提供根据ID查找物品名称的功能
 */

// 使用ES模块导入语法，添加 import assertion
import itemsAndPets from './items_and_pets.json' assert { type: 'json' };

/**
 * 根据ID和类型查找物品名称
 * @param {number} id - 要查找的物品ID
 * @param {number} [type] - 物品类型（可选，1是精灵，2是道具，3是时装）
 * @returns {string|null} 找到的物品名称，如果未找到则返回null
 */
function findItemNameById(id, type) {

  if (id == 999888) return '交易行余额'

  // 防止id为null或undefined导致错误
  if (id == null) return null;
  
  // 确保输入的ID是数字类型
  const numericId = Number(id);
  
  // 处理NaN的情况
  if (isNaN(numericId)) return null;
  
  try {
    // 查找匹配ID的物品
    let item;
    
    if (type != null) {
      // 如果提供了类型，同时匹配ID和类型
      const numericType = Number(type);
      item = itemsAndPets.find(item => 
        item.id === numericId && 
        item.type === numericType
      );
    } else {
      // 否则只匹配ID
      item = itemsAndPets.find(item => item.id === numericId);
    }
    
    // 返回找到的物品名称，或者null（如果未找到）
    return item ? item.name : null;
  } catch (error) {
    console.error('查找物品名称时出错:', error);
    return null;
  }
}

/**
 * 根据名称关键词查找物品
 * @param {string} keyword - 名称关键词
 * @returns {Array} 包含关键词的物品列表
 */
function findItemsByKeyword(keyword) {
  if (!keyword || typeof keyword !== 'string') {
    return [];
  }
  
  try {
    return itemsAndPets.filter(item => 
      item.name.includes(keyword)
    );
  } catch (error) {
    console.error('根据关键词查找物品出错:', error);
    return [];
  }
}

/**
 * 获取所有物品列表
 * @returns {Array} 所有物品的数组
 */
function getAllItems() {
  try {
    return [...itemsAndPets];
  } catch (error) {
    console.error('获取所有物品列表出错:', error);
    return [];
  }
}

// 使用ES模块导出语法
export {
  findItemNameById,
  findItemsByKeyword,
  getAllItems
};